1
GPUパフォーマンスのメモリ中心性
AI024Lesson 5
00:00

GPU加速では、"計算最優先"の考え方を捨てなければなりません。現代の性能は メモリ管理によって決まります。これはホスト(CPU)とデバイス(GPU)間でのデータの割り当て、同期、最適化を統合的に管理することです。

1. メモリと計算のギャップ

GPUの算術演算スループット($TFLOPS$)が飛躍的に向上している一方、メモリ帯域幅($GB/s$)ははるかに遅い速度でしか成長していません。このため、実行ユニットがしばしば「空腹状態」になり、VRAMからデータが到着するのを待たなければならないギャップが生じます。結果として、 GPUプログラミングは実際にはメモリプログラミングであるのです。

2. ルーフラインモデル

このモデルは 算術強度 (FLOPs/バイト)と性能の関係を可視化します。アプリケーションは通常、以下の2つのカテゴリに分類されます:

  • メモリ制限型: 帯域幅に制限される(急勾配)。
  • 計算制限型: ピークのTFLOPSに制限される(水平な天井)。
算術強度(FLOPs/バイト)性能(GFLOPS)メモリ制限型計算制限型

3. データ移動のコスト

主なパフォーマンスのボトルネックは数学自体ではなく、1バイトをPCIeバスやHBM間で移動させる際のレイテンシとエネルギー消費です。高性能なコードはデータの滞在位置を重視し、ホストとデバイス間の転送を最小限に抑えます。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>